上一篇提到了TiDB的特色之一,便是實踐了HTAP。那HTAP又是什麼東西?
HTAP全名Hybrid Transaction and Analytical Processing,混合事務與分析。
能將OLTP(On-Line Transactional Processing)和OLAP(On-Line Analytical Processing)的需求統一在一套Database中完成,省去兩者之間透過ETL(Extract-Transform-Load)處理資料所消耗的時間。
OLTP類型的資料庫主要用於處理事務,透過資料庫產生數據,對於資料的異動行為較為頻繁,且相當重視數據的即時性。一般牽扯到金錢紀錄的系統都會使用這種類型的資料庫,以保證資料的一致性。
而OLAP類型的資料庫則用於數據分析上,使用者會透過自己檢視資料的角度去儲存資料,往往是需要讀取上百萬甚至千萬以上的資料,使用的查詢語法也較為複雜。這類型的資料庫對於資料的異動較不頻繁。
這兩類資料庫通常會透過ETL做資料轉換,將資料從OLTP匯總到OLAP類型的資料庫。
但是隨著大環境業務型態的轉變,越來愈多的使用場景對於分析數據的需求,即時性愈趨重要。ETL資料轉換需要的時間不一,也造成了OLTP與OLAP兩邊資料會有不一致的情形,也就形成了總是慢一拍的情況。另外,兩套系統的維護成本考量也是讓人頭痛的部分。
HTAP的出現解決了上面的問題,就像食神把瀨尿蝦跟牛丸混在一起做成撒尿牛丸一樣。用了HTAP以後頭腦就靈光了很多,每次考試都考一百分。TiDB同時擁有Column base & Row base兩種類型的資料儲存引擎,讓同一份數據在一套資料庫上同時支持OLTP與OLAP的事務。
接下來會繼續描述TiDB是用怎樣的架構來做到這件事情。